package br.com.mrh.service;

import java.io.Serializable;

import br.com.mrh.db.Retorno;
import br.com.mrh.exception.MRHAlertaException;
import br.com.mrh.exception.MRHErroException;
import br.com.mrh.faces.FacesResource;
import br.com.mrh.faces.FacesUtil;
import br.com.mrh.util.Constants;

/**
 * Classe abstrata Base para uma classe Service
 * @author 	alex.paula
 * @since 	20/02/2012
 * @version 1.0
 */
public abstract class BaseService implements Serializable {

	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = 1L;
	
	protected Retorno retorno;
	
	/**
	 * Busca valor no(s) arquivos <i>messages</i> por chave
	 * @param key
	 * @return String
	 */
	public String getStringBolha(String key){
		
		FacesResource facesResource = new FacesResource();
		
		return facesResource.getMessageResourceString(FacesUtil.getFacesContext(), key, Constants.defaultParams);
	}
	
	/**
	 * Metodo Abstrato que verifica retorno das Procedures do Banco de Bados
	 * @param retorno
	 * @throws MRHAlertaException
	 * @throws MRHErroException
	 */
	public void validaRetornoDB(Retorno retorno) throws MRHAlertaException, MRHErroException {
		
		this.retorno = retorno;
		
		if(!retorno.getCodRetorno().equals(0))
			if(retorno.getMsgRetorno().trim().isEmpty())
				throw new MRHErroException(new NullPointerException("MsgRetorno").getMessage());
			else
				throw new MRHAlertaException(retorno.getMsgRetorno());
		
	}
}
